#!/bin/bash

problems=(
    "2527 【模拟】2024D结队编程"
    "2528 【模拟】2024E素数之积"
    "2529 【模拟】2024D-螺旋数字矩阵"
    "2530 【模拟】2024D灰度图恢复"
    "2531 【模拟】2024D来自异国的客人"
    "2532 【模拟】2024D 挙登者1"
    "2533 【模拟】2024D学登者2"
    "2534 【模拟】2024E TLV编码"
    "2535 【模拟】2024D多段线数据压缩"
    "2536 【模拟】2024D解密犯罪时间"
    "2537 【模拟】2024E绘图机器"
    "2538 【模拟】2024E整数对最小和"
    "2539 【模拟】2024D-反射计数"
    "2540 【模拟】2024E靠谐的车"
    "2543 【模拟】2024D转骰子"
    "2544 【模拟】2024E水仙花数"
    "2546 【模拟】2024E货币兑换"
    "2548 【模拟】2024D移动元素获得最大数组和"
    "2549 【模拟】2024D学生重新排队"
    "2550 【排序】2024D身高体重排序"
    "2551 【排序】2023B拔河比赛"
    "2552 【排序】2024D身高排序"
    "2553 【排序】2024E磁盘容量"
    "2554 【排序】2024E日志时间排序"
    "2555 【排序】2024EVLAN资源池"
    "2556 【排序】2024D开源项目热榜"
    "2557 【排序】2024D最低位排序"
    "2558 【排序】2024D机场航班调度程序"
    "2559 【排序】2024E智能成绩表"
    "2560 【排序】2024E数组去重和排序"
    "2561 【排序】2024E预订酒店"
    "2562 【排序】2024E字符统计及重排"
    "2580 【系统设计】2024D文件缓存系统"
    "2581 【系统设计】2024E模拟目录管理"
    "2582 【系统设计】2024E简易内存池"
    "2600 【栈】2023A括号检查"
    "2601 【栈】2023A投篮大赛"
    "2602 【栈】2023A解压缩算法"
    "2603 【栈】2023B仿LISP运算"
    "2604 【栈】2024E荒岛求生"
    "2605 【栈】2024D密码输入检测"
    "2607 【栈】2024D火星文计算2"
    "2650 【单调栈】2024D找朋友"
    "2651 【单调栈】2023A删除重复数字后的最大数字"
    "2652 【单调栈】2024E找最小数"
    "2653 【单调栈】2023B阿里巴巴找黄金宝箱(4)"
    "2654 【单调栈】2023A天然蓄水池"
    "2655 【单调栈】2024E回转寿司"
    "2698 【队列】2024D篮球游戏"
    "2699 【队列】2023B不开心的小朋友"
    "2700 【哈希集合】2023B找出符合要求的字符串子串"
    "2701 【哈希集合】2023A寻找关键钥匙"
    "2702 【哈希集合】2023A明明的随机数"
    "2703 【哈希集合】2024E英文输入法"
    "2704 【哈希集合】2023A寻找密码"
    "2705 【哈希集合】2024D最大N个数与最小N个数的和"
    "2706 【哈希集合】2024DCPU算力分配"
    "2710 【哈希集合】2024D围棋的气"
    "2800 【哈希表】2023A集五福"
    "2801 【哈希表】2023A删除最少字符"
    "2804 【哈希表】2023A相同数字的积木游戏"
    "2805 【哈希表】2023B阿里巴巴找黄金宝箱(3)"
    "2806 【哈希表】2023A统计匹配的二元组个数"
    "2809 【哈希表】2023B告警抑制"
    "2811 【哈希表】2024E跳房子I"
    "2812 【哈希表】2024E免单统计"
    "2813 【哈希表】2024E找等值元素"
    "2814 【哈希表】2024D内存冷热标记"
    "2815 【哈希表】2023A字符串重新排序"
    "2816 【哈希表】2024E选修课"
    "2817 【哈希表】2024E单词接龙"
    "2818 【哈希表】2023B找出两个整数数组中同时出现的整数"
    "2819 【哈希表】2024D掌握单词个数"
    "2820 【哈希表】2024D密码解密"
    "2829 【哈希表】2024D-查找众数及中位数"
    "2830 【哈希表】2023B-斗地主"
    "2831 【哈希表】2024D-石头剪刀布游戏"
    "2832 【哈希表】2024D-测试用例执行计划"
    "2840 【哈希表】2024E-恢复数字序列"
    "2850 【哈希表】2024E-斗地主之顺子"
    "2851 【哈希表】2024E-猜字谜"
    "3000 【双指针】2023A-双十一"
    "3001 【双指针】2023B-太阳能航天器"
    "3002 【双指针】2023A-最长的元音字符串"
    "3003 【双指针】2023A-两数之和绝对值最小"
    "3004 【双指针】2024D-跳房子II"
    "3005 【双指针】2024D-提取字符串中最长数学表达式"
    "3099 【贪心】2024D-伐木工"
    "3100 【贪心】2023B-求最小步数"
    "3101 【贪心】2023B-路灯照明问题"
    "3102 【贪心】2024D-停车找车位"
    "3103 【贪心】2024D-分割均衡字符串"
    "3104 【贪心】2024D-座位调整"
    "3105 【贪心】2023B-阿里巴巴找黄金宝箱(2)"
    "3106 【贪心】2024D-小朋友来自多少小区"
    "3107 【贪心】2024E-求字符串中所有整数的最小和"
    "3108 【DP_贪心】2024E-贪心的商人"
    "3110 【DP_贪心】2024E-观看文艺汇演"
    "3111 【贪心】2023B-数字序列比大小"
    "3112 【贪心】2023B-判断字符串子序列"
    "3115 【贪心】2024D-有效子字符串"
    "3116 【贪心】2023B-数据最节约的备份方法"
    "3117 【贪心】2024D-最多可以派出多少支团队"
    "3120 【贪心】2024E-吃火锅"
    "3121 【贪心】2023A-卡片组成的最大数字"
    "3122 【贪心】2023A-快递货车"
    "3124 【贪心】2024D-分配土地最大面积"
    "3130 【贪心】2024D-在规定时间内获得的最大报酬"
    "3131 【贪心】2024D-贪心歌手"
    "3150 【贪心】2024E-变换最小字符串"
    "3160 【贪心】2024D-停车场车辆统计"
    "3170 【贪心】2024D-任务处理"
    "3194 【贪心】2024E-社交距离"
    "3195 【贪心】2024D-运输时间"
    "3196 【贪心】2024D-会议室占用时间"
    "3197 【贪心】2024E-堆内存申请"
    "3198 【贪心】2024D-环中最长子串"
    "3199 【贪心】2024D-虚拟游戏理财"
    "3200 【不定滑窗】2024E-完美走位"
    "3201 【不定滑窗】2024E-最长和为目标值的子序列"
    "3202 【不定滑窗】2023A-区块链文件转储系统"
    "3203 【不定滑窗】2024E-寻找符合要求的最长子串"
    "3204 【不定滑窗】2024D-求满足条件的最长子串的长度"
    "3205 【不定滑窗】2024D-字符串摘要"
    "3206 【不定滑窗】2024E-最长的指定瑕疵度的元音子串"
    "3207 【不定滑窗】2024D-最大可购买的宝石数量"
    "3208 【不定滑窗】2024D-最小矩阵宽度"
    "3250 【固定滑窗】2023B-阿里巴巴找黄金宝箱(5)"
    "3251 【固定滑窗】2023A-找出通过车辆最多颜色"
    "3252 【固定滑窗】2023A-知识图谱新词挖掘"
    "3253 【固定滑窗】2023B-探索地块建立"
    "3254 【固定滑窗】2024E-补种未成活胡杨"
    "3255 【固定滑窗】2024E-考勤信息"
    "3256 【固定滑窗】2024D-贪吃的猴子"
    "3257 【固定滑窗】2024E-最少交换次数"
    "3300 【二分查找】2023A-农场施肥"
    "3301 【二分查找】2023B-食堂供餐"
    "3302 【二分查找】2023A-开放日活动"
    "3303 【二分查找】2024E-最佳植树距离"
    "3304 【二分查找】2023B-生日礼物"
    "3305 【二分查找】2024E-孙悟空吃蟠桃"
    "3306 【二分查找】2024D-小明找位置"
    "3307 【二分查找】2024D-部门人力分配"
    "3308 【二分查找】2024E-项目排期"
    "3309 【二分查找】2024D-机器人搬砖"
    "3310 【二分查找】2024E-平均像素值"
    "3395 【DP】2024E-跳格子3"
    "3396 【DP】2024D-Wonderland"
    "3397 【DP】2024D-两个字符串间的最短路径"
    "3398 【DP】2024D-园区参观路径"
    "3399 【DP】2023A-猴子爬山"
    "3400 【DP】2024E-分班"
    "3401 【DP】2023B-超级玛丽过吊桥"
    "3402 【DP】2023B-高速公路休息站充电规划"
    "3403 【DP】2023B-跳格子1"
    "3404 【DP】2023B-跳格子2"
    "3405 【DP】2024D-分月饼"
    "3406 【DP】2023A-递增字符串"
    "3407 【DP】2024E-充电设备"
    "3408 【DP】2024E-工作安排"
    "3409 【DP】2023B-代表团坐车"
    "3410 【DP】2023B-第k小的和"
    "3412 【DP】2024E-云短信平台优惠活动"
    "3415 【DP】2024E-通过软盘拷贝文件"
    "3430 【DP】2024E-书籍叠放"
    "3440 【DP】2023A-寻找重复代码"
    "3480 【DP】2024D-抢7游戏"
    "3481 【DP】2024E-分披萨"
    "3497 【DFS_BFS】2024D精准核酸检测"
    "3498 【DFS_BFS】2024E可以组成网络的服务器"
    "3499 【DFS_BFS】2024D图像物体的边界"
    "3500 【DFS_BFS】2024E机器人活动区域"
    "3501 【DFS_BFS】2023B寻找最大价值的矿堆"
    "3502 【DFS_BFS】2024ELinux发行版的数量"
    "3503 【DFS_BFS】2024E开心消消乐"
    "3504 【DFS_BFS】2024E广播服务器"
    "3506 【DFS_BFS】2023B陷阱方格"
    "3507 【DFS_BFS】2023B相同数字组成图形的周长"
    "3508 【DFS_BFS】2024E战场索敌"
    "3509 【DFS_BFS】2023B文件目录大小"
    "3510 【DFS_BFS】2024E树状结构查询"
    "3511 【DFS_BFS】2024D地图寻宝"
    "3512 【DFS_BFS】2024D二叉树的广度优先遍历"
    "3514 【DFS_BFS】2024D寻找最富裕的小家庭"
    "3515 【DFS_BFS】2024D聚餐地点"
    "3600 【DFS】2023B获取食物游戏"
    "3601 【DFS】2023B评论转换输出"
    "3602 【栈_DFS】2023B二叉树遍历"
    "3603 【DFS】2024E计算三叉搜索树的高度"
    "3604 【DFS】2024E悄悄话花费的时间"
    "3605 【DFS】2024E生成哈夫曼树"
    "3700 【BFS】2024E计算网络信号"
    "3701 【BFS】2023B最长广播响应"
    "3702 【BFS】2024E火星改造"
    "3703 【BFS】2023B士兵突击"
    "3706 【BFS】2024E跳马问题"
    "3707 【BFS】2024D亲子游戏"
    "3708 【BFS】2024E周末爬山"
    "3709 【BFS】2024E流浪地球"
    "3750 【BFS】2024D启动多任务排序"
    "3751 【BFS】2024D查找一个有向网络的头节点和尾节点"
    "3752 【BFS】2023A快速开租建站"
    "3753 【BFS】2023A微服务的集成测试"
    "3755 【BFS】2024EBOSS的收入"
    "3799 【BFS】2024E寻找最优的路测线路"
    "3800 【回溯】2023B第N个排列"
    "3801 【回溯】2023A基站维修工程师"
    "3802 【回溯】2023A硬件产品销售方案"
    "3803 【回溯】2023B猜密码"
    "3804 【回溯】2024E找到它"
    "3805 【回溯】2024D考古学家"
    "3806 【回溯】2024D最长连续手牌"
    "3807 【回溯】2024E表演赛游戏分组"
    "3808 【回溯】2024E字符串拼接"
    "3809 【回溯】2024E加密算法"
    "3850 【回溯】2024D田忌赛马"
    "900 【链表】2023A寻找链表的中间节点"
    "4000 【位运算】2024E分苹果"
    "4001 【位运算】2023B出错的或电路"
    "4002 【位运算】2024E响应报文时间"
    "4003 【位运算】2024D找数字"
    "4200 【前缀和】2023B阿里巴巴找黄金宝箱1"
    "4201 【前缀和】2024E分割数组的最大差值"
    "4202 【前缀和】2024E数字游戏"
    "4203 【前缀和_不定滑窗】2024E寻找连续区间"
    "4204 【前缀和】2023B最大子矩阵和"
    "4205 【前缀和】2024E查找接口成功率最优时间段"
    "4206 【前缀和】2024E环中最长子串2"
    "4500 【最小生成树】2024D5G网络建设"
    "4600 【最短路问题】2024D快递员的烦恼"
    "4610 【最短路问题】2024E电脑病毒感染"
    "5000 【模拟】小红书2023秋招提前批小红的数组构造"
    "5001 【模拟】科大讯飞2023非凡计划将企鹅击落水中最小的力"
    "5002 【模拟】科大讯飞2023非凡计划数组的最小距离"
    "5003 【模拟】科大讯飞2023非凡计划汤姆和杰瑞"
    "5004 【模拟】OPPO2023秋招提前批小欧的圆覆盖"
    "5005 【模拟】OPPO2023秋招提前批小欧数组求和"
    "5006 【模拟】美团2023秋招小美走公路"
    "5007 【模拟】大疆2023秋招农田中作物的最大产量"
    "5008 【模拟】百度2023秋招下棋游戏"
    "5009 【模拟】阿里蚂蚁2023秋招奇偶操作"
    "5010 【模拟】荣耀2023秋招根据字符串中的时间信息排序并输出"
    "5011 【模拟】阿里蚂蚁2023秋招讨厌鬼的区间"
    "5100 【栈】华为2023暑期实习空栈压数"
    "5102 【栈】美团2023春招火车迷"
    "5103 【栈】腾讯2020春招压缩算法"
    "5104 【栈】荣耀2023秋招算式求解"
    "5105 【栈】Bilibili2019秋招简单表达式求值"
    "5150 【单调栈】百度2017秋招士兵队列"
    "5151 【单调栈】百度2022秋招士兵的序列"
    "5152 【单调栈】腾讯2021秋招用友2022秋招逛街"
    "5153 【单调栈】Bilibili2021Z秋招大鱼吃小鱼"
    "5154 【单调栈】华为2023Z秋招每日股票价格"
    "5200 【哈希集合】科大讯飞2023Z非凡计划禁着点的方案数"
)


for prob in "${problems[@]}"; do
    # 提取编号
    num=$(echo $prob | grep -oE '^[0-9]+')
    # 提取年份和后面的字母
    year_letter=$(echo $prob | grep -oE '2023[A-Z]|2024[A-Z]')
    letter=${year_letter: -1}  # 提取最后一个字符，即字母
    # 替换【模拟】为_模拟_，替换【和】为_，并提取剩余标题
    title=$(echo $prob | sed 's/【/_/g;s/】/_/g;s/-/_/g' | sed "s/_$year_letter//g")
    # 如果没有年份和字母，则直接使用标题
    if [ -z "$year_letter" ]; then
        title=$(echo $prob | sed 's/【/_/g;s/】/_/g' | xargs)
    fi
    # 构造文件名
    filename="${letter}_${year_letter}_${title// /_}.java"
    # 创建文件
    cat > $filename <<EOF
package org.huawei260.TiKu.ODsuanfa;

/**
 * @Author: qingle
 * @Date: 2024/10/28-16:11
 * @Description: $prob
 * @version: 1.0
 */
public class ${filename%.java} {
}
EOF
done